import { getBaseUrl } from './baseUrl.js'

// 退出登陆
const logout = () => {}

// 请求方法
const BaseServer = (conf) => {
  const { url, params = {}, method = 'POST', needToken = true } = conf
  const MTHOD = method.toUpperCase()

  const headers = conf.header || {}

  if (!params.ecafeToken && needToken) {
    params.ecafeToken = uni.getStorageSync('token') || ''
  }

  return new Promise((resolve, rejects) => {
    // console.info('before-request===', {
    //   url,
    //   params,
    //   method
    // })

    uni.request({
      url,
      data: params,
      method: MTHOD,
      header: {
        'content-type':
          'application/x-www-form-urlencoded;text/plain;charset=UTF-8;',
        ...headers
      },
      success: (res) => {
        // console.log('res ==>', res)
        // if (res.data) {
        //   const { code, message } = res.data
        //   switch (code) {
        //     case '0':
        resolve(res.data)
        //       break
        //     case '99':
        //       logout()
        //     default:
        //       uni.showToast({
        //         title: message || '出错了',
        //         icon: 'none',
        //         duration: 2000
        //       })
        //       break
        //   }
        // } else {
        //   logout()
        // }
      },
      fail: (e) => {
        uni.showToast({
          title: '网络错误',
          icon: 'none',
          duration: 2000
        })
        const requestData = { url, errMsg: e.errMsg }
        rejects(requestData)
      },
      complete: function (e) {
        // console.info('after-request===', {
        //   url,
        //   params,
        //   method
        // })
      }
    })
  })
}

// 任意请求，默认post请求
const http = (config) => {
  return BaseServer(config)
}

// post 请求
const postRequest = (url, params, needToken, header) => {
  return BaseServer({ url, params, method: 'POST', needToken, header })
}

// get 请求
const getRequest = (url, params, needToken) => {
  return BaseServer({ url, params, method: 'GET', needToken, header })
}

const exportData = {
  post: postRequest,
  get: getRequest,
  server: http,
  ...getBaseUrl()
}

// export default { getRequest, postRequest, http }

export default exportData
